#include <stdio.h>
#include <sys/ipc.h>
#include <string.h>
#include <errno.h>
#include <sys/msg.h>
#include <unistd.h>

#define   FTOK_PATH   "/dev/zero"
#define   FTOK_PROGID 0x22
typedef struct s_msgbuf
{

       	long mtype;

       	char mtext[512];
} t_msgbuf;

int main(int argc,char **argv)
{

	int               rv=-1;
	int               msgid;
	int               i;
	key_t             key;
	t_msgbuf          msgbuf;
	int               msgtype;

	key=ftok(FTOK_PATH,FTOK_PROGID);
	if( -1  == key)
	{
	
		printf("ftok failure:%s\n",strerror(errno));
		return -1;
	}

	msgid=msgget(key,IPC_CREAT|0666);
	if(-1 == msgid )
	{
		printf("msgget failure:%s\n",strerror(errno));
		return -2;
	}

	msgtype=(int)key;

	for(i=0;i<4;i++)
	{
		msgbuf.mtype=msgtype;
		
		strcpy(msgbuf.mtext,"Ping");
		rv=msgsnd(msgid,&msgbuf,sizeof(msgbuf.mtext),IPC_NOWAIT);
       
	       	if(rv == -1) 
	       	{
		       	printf("msgsnd failure:%s\n",strerror(errno));
		     	return -3;
	       	}
		printf("send message:%s\n",msgbuf.mtext);
		sleep(1);
	}

	msgctl(msgid,IPC_RMID,NULL);



	return 0;

}
